package com.kunzai.commonfiles;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.UUID;

@RestController
@RequestMapping("/Runtime")
public class kunzaiFile {

      @Value("${kunzai.path}")
      private String filePath;


    /**
     * 文件上传
     * @param file
     * @return
     */

    @PostMapping("/fileInput")
      public String testPath(@RequestBody MultipartFile file){
            //获取原始文件名称
            String Ofilename = file.getOriginalFilename();
            System.err.println("原始文件名称-=--=-=-=-=-=-==-"+Ofilename);

            //截取字符串
            String firstName = Ofilename.substring(0, Ofilename.lastIndexOf("."));
            System.err.println(firstName+"-=-=-不要后缀的完整的原始文件名");

            //截取出来完整的后缀
            String LastName = Ofilename.substring(Ofilename.lastIndexOf("."));
            System.err.println("完整后缀-=-=-=-=-=-"+LastName);

            //随机文件名称
            String messyCode = UUID.randomUUID().toString();
            System.err.println("随机文件名称【-=-=-=-==】"+messyCode);

            //完整的文件名
            String NewFileNme = firstName+messyCode+LastName;

            System.out.println("【完整的文件名】"+NewFileNme);

//            配置你需要将文件转存到那个位置
           String newBasePath = filePath + NewFileNme;
            System.err.println(newBasePath);

            File file1 = new File(filePath);
            //判断当前目录是否存在，不存在就需要创建
            if (!file1.exists()){
                  boolean mkdirs = file1.mkdirs();
            }
            //不需要创建那么就进行转存
            try {
                  file.transferTo(new File(newBasePath));
            } catch (IOException e) {
                  e.printStackTrace();
                  System.err.println("文件上传出现异常");
            }

            return "OK";
      }
    /**
     * 文件下载
     */
    @GetMapping("/download")
    public void download(@RequestParam String name, HttpServletResponse response){

        //将文件路径 和文件名称进行评价
        File file = new File(filePath + name);
        //这里主要是将文件写回去
        try {
            ServletOutputStream outputStream = response.getOutputStream();
            FileInputStream fileInputStream = new FileInputStream(file);
            int len = 0;
            byte[] bytes = new byte[1024];
            while ((len = fileInputStream.read(bytes))!=-1){
                //输出给浏览器
                outputStream.write(bytes,0,len);
                outputStream.flush();
            }
            outputStream.close();
            fileInputStream.close();
            //读取出来 写出去
        }  catch (IOException e) {
            e.printStackTrace();
        }
    }





}
